package nk;

import java.util.Scanner;

/**
 * 题目标题：
 * <p>
 * 计算两个字符串的最大公共字串的长度，字符不区分大小写
 * <p>
 * 详细描述：
 * <p>
 * 接口说明
 * <p>
 * 原型：
 * <p>
 * int getCommonStrLength(char * pFirstStr, char * pSecondStr);
 * <p>
 * 输入参数：
 * <p>
 * char * pFirstStr //第一个字符串
 * <p>
 * char * pSecondStr//第二个字符串
 */
public class SumsubString {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()) {
            String s1 = sc.nextLine();
            String s2 = sc.nextLine();
            System.out.println(sumSub(s1, s2));
        }
    }

    private static int sumSub(String s1, String s2) {
        if (s1.length() == 0 || s2.length() == 0) {
            return 0;
        }
        //qwertyui
        //asdtyd
        s1 = s1.toLowerCase();
        s2 = s2.toLowerCase();
        if (s1.length() > s2.length()) {
            //遍历长度小的字符串
            return getSub(s2, s1);
        } else {
            //遍历长度小的字符串
            return getSub(s1, s2);
        }
    }

    /**
     * 使用双指针中的滑窗进行解决, i j 分别指向s1 s2起始位置,  si != sj 时,计算当前长度, 小串复原j=0  直到两个字符串都被遍历完则完成统计.
     *
     * @param s1 < 小串
     * @param s2 > 大串
     * @return
     */
    private static int getSub(String s1, String s2) {
        int res = 0;
        int s1Len = s1.length();
        for (int k = 0; k < s1Len && s1.length() > res; k++) {
            s1 = s1.substring(k);
            int j = 0, i = 0;  // j小串的起始位置, i大串起始位置
            int s1L = s1.length();
            int s2L = s2.length();

            while (j < s1L && i < s2L) {
                if (s1.charAt(j) == s2.charAt(i)) {
                    res = Math.max(res, ++j);
                } else {
                    j = 0;
                }
                i++;
            }
        }
        return res;
    }
}
